package com.turing.post.cardmanagement.util;

import java.math.BigInteger;
import java.util.Date;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;
import com.turing.post.util.PCPSWebInput;

/**
 * 售卡机构出入库明细
 * 
 * @author ys
 * 
 */

@Remote
@Local
public interface SaleCardStockDetailDao {
	/**
	 * 插入
	 * 
	 * @param SaleCardStockDetail
	 *            对象
	 * @throws PCPSApplicationException
	 */
	public void insert(SaleCardStockDetail SaleCardStockDetail)
			throws PCPSApplicationException;

	/**
	 * 联合查询，发卡商机构号，批次号，交易日期，交易类型，卡种类，卡面值,页码
	 * 
	 * @param IssueBranchNo
	 *            发卡商机构号
	 * @param batchNo
	 *            批次号
	 * @param TranDate
	 *            交易日期
	 * @param TranType
	 *            交易类型
	 * @param CardClassicId
	 *            卡种类
	 * @param CardParValueId
	 *            卡面值
	 * @param page
	 *            页码
	 * @return SaleCardStockDetail对象集合
	 */
	public List<SaleCardStockDetail> getSaleCardStockDetailList(
			String SaleBranchNo, String batchNo, String starttime,
			String endtime, String TranType, BigInteger cardFaceId,
			String startSeqNo, String endSeqNo, Integer page);

	/**
	 * 联合查询，发卡商机构号，批次号，交易日期，交易类型，卡种类，卡面值
	 * 
	 * @param IssueBranchNo
	 *            发卡商机构号
	 * @param batchNo
	 *            批次号
	 * @param TranDate
	 *            交易日期
	 * @param TranType
	 *            交易类型
	 * @param CardClassicId
	 *            卡种类
	 * @param CardParValueId
	 *            卡面值
	 * 
	 * @return 记录条数
	 */
	public Integer getSaleCardStockDetailCount(String SaleBranchNo,
			String batchNo, String starttime, String endtime, String TranType,
			BigInteger cardFaceId, String startSeqNo, String endSeqNo);

	/**
	 * 按销售机构号分类汇总某发卡商某日某发卡商分支机构下属销售机构记帐流水
	 * 
	 * @param issueCompanyNo
	 *            发卡商NO
	 * @param tranDate
	 *            帐务日期
	 * @param issueBranchNo
	 *            发卡商分支机构
	 * @return
	 */
	public List<Object[]> sumAllSaleCardStockDaySettlementByBranch(
			String issueCompanyNo, Date tranDate, String issueBranchNo);

	/**
	 * @根据IoOrderId,IssueBranchNo,TranDate查询明细
	 * @param
	 * @return 对象
	 */
	public SaleCardStockDetail getSaleCardStockDetailByDatil(
			BigInteger IoOrderId, String IssueBranchNo, Date TranDate);

	/**
	 * 请领统计表
	 * 
	 * @param webInput
	 * @param saleBranchNo
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	public List<Object[]> getSaleCardStockDetailByCondition(
			PCPSWebInput webInput, String saleBranchNo, String startDate,
			String endDate);
}
